home *** CD-ROM | disk | FTP | other *** search
-
- Listing 2
-
- //
- // rational.cpp
- //
- #include "mylib.h"
- #include "rational.h"
-
- rational rational::operator-()
- {
- rational result(*this);
- result.num = -result.num;
- return result;
- }
-
- rational rational::operator++(int)
- {
- rational result(*this);
- *this += 1;
- return result;
- }
-
- rational rational::operator--(int)
- {
- rational result(*this);
- *this -= 1;
- return result;
- }
-
- rational &rational::operator+=(rational r)
- {
- num = num * r.denom + r.num * denom;
- denom *= r.denom;
- simplify();
- return *this;
- }
-
- rational &rational::operator-=(rational r)
- {
- num = num * r.denom - r.num * denom;
- denom *= r.denom;
- simplify();
- return *this;
- }
-
- rational &rational::operator*=(rational r)
- {
- num *= r.num;
- denom *= r.denom;
- simplify();
- return *this;
- }
-
- rational &rational::operator/=(rational r)
- {
- num *= r.denom;
- denom *= r.num;
- simplify();
- return *this;
- }
-
- void rational::put(FILE *f)
- {
- fprintf(f, "(%ld/%ld)", num, denom);
- }
-
- void rational::simplify()
- {
- long x = gcd(num, denom);
- num /= x;
- denom /= x;
- }
-
-